這章節是程式實作,會從轉帳的觀念講起,之後會進行加法與減法的function實作。
一、轉帳
以太鏈的帳戶(account)就像銀行帳戶一樣,彼此間可以轉帳。
進行轉帳時必須知道對方的 address(地址),寫法如下:address payable name
重點:要有 payable 才能進行轉帳!
以太幣轉帳有兩種寫法:
二、一起來看Storage合約
這部分介紹了一個名為Storage的合約。
程式的每一部分意義如下:
• 第1行:授權宣告(可改為 UNLICENSED 或 GPL-3.0)。
• 第3行:版本宣告,設定程式碼在 0.7.0~0.9.0 間可使用。
• 第9行:宣告合約Storage。
• 第17行:宣告function store(用來儲存資料)。
• 第25行:宣告function retrieve(用來取出資料,需回傳值)。
圖/Storage合約。
// SPDX-License-Identifier: GPL-3.0
// 這是授權宣告,如果沒有打這行的話,系統會跟你說
pragma solidity >=0.7.0 <0.9.0;
// 這是版本宣告,設定程式碼在 0.7.0~0.9.0 之間都可以使用
/// @title Storage
/// @dev Store & retrieve value in a variable
contract Storage { // 宣告一個名為 Storage 的 contract
uint256 number;
/**
* @dev Store value in variable
* @param num value to store
*/
function store(uint256 num) public { // 宣告一個方法
number = num;
}
/**
* @dev Return value
* @return value of 'number'
*/
function retrieve() public view returns (uint256) { // 宣告一個查詢方法
return number;
}
}
三、實作
接下來進行實作練習,是參考以下連結來做練習的,若想看更詳細解說,可點進去觀看:
參考影片Solidity 30 天實戰教學(2020) - Day 4 - Layout of a solidity code
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
// 合約:calualate,內含兩個 function
contract calualate {
int private a; // 這是用來儲存結果的變數
function add(int x, int y) public returns(int z){
// 加法 function,兩數相加為 z
a = x + y;
z = a;
}
function sub(int x, int y) public returns(int z){
// 減法 function,兩數相減為 z
a = x - y;
z = a;
}
function total() public view returns(int){
return a;
}
}
Tips
這是一個簡單的加法與減法function,目的在於讓初學者熟悉Solidity合約的基本架構與function寫法。若覺得容易,可試著自己寫看看「乘法」與「除法」的function!
作者影片連續30天,每天5分鐘,一起學習blockchain! | day26-solidity小實作 | Zoe Ke可以直接跟著影片實作!
這章節進行了solidity實作,下一章節要來介紹什麼是Mapping~
有關實作的部分,我認為影片版會更能理解,所以都會以附上作者原影片方式代替文字書寫。
第二十三天書中的語錄是:
恭喜讀者看完第一個小實作,我都放非常簡單的程式,讓大家可以輕易上手,如果覺得太簡單也可以自己挑戰看看困難一點的程式呦!